package com.code.google.wormon.base;

/**
 * The Game interface, this is the base interface for a runnable game.
 * 
 * @author volnei
 * 
 */
public interface Game {

	/**
	 * This method is called once when the engine is started.
	 * 
	 * @see Engine#play()
	 */
	void start();

	/**
	 * Process a screen view for current cycle. This method is called on each
	 * game refresh until game is stopped.
	 */
	void doGraphics();

	/**
	 * Process all logic cycles. This method is called on each game refresh
	 * until game is stopped.
	 */
	void doLogics();

	/**
	 * Do all stop logics and graphics. This method is called once when the
	 * engine is stopped.
	 * 
	 * @see Engine#stop()
	 */
	void stop();

	Integer getScreenWidth();

	Integer getScreenHeight();
	
	GameObject getGuy();

}
